package com.dome.thread;
//线程案例生产者
public class Producer implements Runnable {
    Medium medium;

    public Producer(Medium medium) {
        this.medium=medium;
    }

    @Override
    public void run() {
        //生产者判断媒介中有无商品,如有就等待,如没有就生产商品
        //生产完商品放到媒介中,改变媒介中状态,然后打开锁唤醒消费着
          while (true){
              synchronized (medium.getLock()){
                  //先判断今日商品已达上限
                  if (medium.getCount()==0){
                      break;
                  }else {
                      //判断媒介中是无商品的
                      if (!medium.isFalt()){
                          System.out.println(Thread.currentThread().getName()+"生产出第:"+medium.getCount()+"个商品");
                          //改变状态
                          medium.setFalt(true);
                          //打开锁唤醒消费着
                          medium.getLock().notifyAll();
                      }else {
                          //否则等待
                          try {
                              medium.getLock().wait();
                          } catch (InterruptedException e) {
                              e.printStackTrace();
                          }
                      }
                  }
              }
          }
    }
}
